<?php
Zend_Loader::loadClass("Application_Ajax_Server_Function");
Zend_Loader::loadClass('Gases');

class SaveGas extends Application_Ajax_Server_Function
{
	public function call() {

		foreach ($this->_params as &$param) {
			$param = urldecode($param);
		}

		$esito = null;
		Model::getDefaultAdapter()->beginTransaction();
		$scenario = $this->_getParam('id', 0) ? "update" : "new";
		try {
			$gases = new Gases();
			$gas = ($scenario == "new") ? $gases->createRow() : $gases->fetchRow($gases->select()->where('id = ?', $this->_getParam('id')));
			$gas->name = $this->_getParam('gas_name', '');
			$gas->source = $this->_getParam('gas_source', '');
			$gas->description = $this->_getParam('gas_descr', '');
			$gas->id_category = $this->_getParam('gas_category_id', null);
			$gas->thickness = $this->_getParam('gas_thickness', 0);
			$gas->status = 1;

			$gas->save();
			if ($scenario == "new") {
				$id_gas = $gases->getAdapter()->lastInsertId();
			} else {
				$id_gas = $this->_getParam('id');
			}

			Model::getDefaultAdapter()->commit();
			if ($scenario == "new") {
				$msg = "Il gas è stato aggiunto con successo al database";
			} else {
				$msg = "Le proprietà del gas sono state aggiornate con successo";
			}
			$esito = true;

		} catch (Exception $ex) {
			$esito = false;
			Model::getDefaultAdapter()->rollBack();
			if ($scenario == "new") {
				echo $ex->getMessage();
				$msg = "Si è verificato un errore durante l'inserimento del nuovo gas nel database";
			} else {
				$msg = "Si è verificato un errore durante l'aggiornamento delle proprietà del gas nel database";
			}
		}

		$info = array ("esito" => $esito, "id" => $id_gas, "messages" => $msg);
		return $info;
	}
}